/**
 * ReportGear(2011)
 */
package com.reportgear.report.model.headerfooter;

import java.awt.geom.Dimension2D;

import javax.swing.Icon;

import com.reportgear.core.api.BaseObject;
import com.reportgear.core.api.XmlSerializerWithReadReturn;
import com.reportgear.report.model.headerfooter.editor.ElementEditor;
import com.reportgear.core.api.Cloneable;

/**
 * 页眉页脚元素
 * 
 * @version 1.0 2011-4-22
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since Report 1.0
 */
public interface HFElement extends Cloneable<BaseObject>, XmlSerializerWithReadReturn<HFElement> {
	/**
	 * XML标签
	 */
	public static final String XML_TAG_TYPE = "type";
	/**
	 * TextHFElement
	 */
	public static final String TYPE_TEXT = "text";

	/**
	 * PageNumHFElement
	 */
	public static final String TYPE_PAGE_NUM = "pageNum";

	/**
	 * TotalPagesHFElement
	 */
	public static final String TYPE_TOTAL_PAGES = "totalPages";

	/**
	 * GroupPageNumHFElement
	 */
	public static final String TYPE_GROUP_PAGE_NUM = "groupPageNum";

	/**
	 * GroupTotalHFElement
	 */
	public static final String TYPE_GROUP_TOTAL_PAGES = "groupTotalPages";
	/**
	 * NewLineHFElement
	 */
	public static final String TYPE_NEWLINE = "newLine";

	/**
	 * 获取尺寸
	 * 
	 * @return 尺寸
	 */
	public Dimension2D getSize();

	/**
	 * 获取显示标签
	 * 
	 * @return 标签
	 */
	public String getCaption();

	/**
	 * 对象编辑器
	 * 
	 * @return 对象编辑器
	 */
	public ElementEditor getEditor();

	/**
	 * 获取图标
	 * 
	 * @return 图标
	 */
	public Icon getIcon();
}
